package com.yanggu.scala.chapater18.generic

import SeasonEnum.SeasonEnum

object GenericDemo02 {

  def main(args: Array[String]): Unit = {
    val class1 = new EnglishClass[SeasonEnum, String, String](SeasonEnum.spring, "001班", "高级班")
    println(s"班级季节: ${class1.classSean}, 班级名称: ${class1.className}, 班级类型: ${class1.classType}")

    val class2 = new EnglishClass[SeasonEnum, String, Int](SeasonEnum.summer, "002班", 2)
    println(s"班级季节: ${class2.classSean}, 班级名称: ${class2.className}, 班级类型: ${class2.classType}")
  }

}
/*
要求
请设计一个EnglishClass (英语班级类)，在创建EnglishClass的一个实例时，需要指定[ 班级开班季节(spring,autumn,summer,winter)、班级名称、班级类型]
开班季节只能是指定的，班级名称为String, 班级类型是(字符串类型 "高级班", "初级班"..) 或者是 Int 类型(1, 2, 3 等)
请使用泛型来完成本案例.
 */

//scala泛型类
class EnglishClass[A, B, C](val classSean: A, val className: B, val classType: C)

/**
 * 枚举对象
 * scala的枚举需要继承自Enumeration
 */
object SeasonEnum extends Enumeration {

  //自定义SeasonEm，是Value类型,这样才能使用
  type SeasonEnum = Value

  val spring, summer, winter, autumn = Value

}

